package protocol.data.services;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import protocol.common.entity.HttpConnConfig;
import protocol.common.entity.HttpParametersConfig;
import protocol.common.entity.ParametersType;
import protocol.common.util.ConfigLoader;
import protocol.common.util.StringKit;

/**
 * 配置文件加载服务
 * 
 * <p>提供配置文件的读取，保存</p>
 * 
 * @author 陈杰
 * @version 1.0
 * @since 2016年3月15日 16:48:49
 *
 * Copyright (c) 2016 陈杰(chenjie_java@aliyun.com)
 * */
public class ConfigLoaderServices {

	public List<HttpConnConfig> readConfigFromPropertiesFile(String filePath){
		try {
			List<HttpConnConfig> httpConnConfigList = new ArrayList<HttpConnConfig>();
			Map<String,String> configMap = ConfigLoader.initPropertisFile(filePath);
			String[] channleConfigItems =  configMap.remove("Channel.Config.Pool").split(",");
			for(String channleConfig : channleConfigItems){
				HttpConnConfig httpConnConfig = new HttpConnConfig();
				for(ParametersType type : ParametersType.getAllTypeNames()){
					String deliverConfigKey = configMap.get("Channel.Config."+channleConfig+"."+type.getTypeName());
					if(!StringKit.isEmpty(deliverConfigKey)){
						HttpParametersConfig parametersConfig = new HttpParametersConfig();
						httpConnConfig.setParametersConfig(type,parametersConfig);
						parametersConfig.setParametersType(Integer.parseInt(configMap.remove(deliverConfigKey+".type")));
						parametersConfig.setParametersClass(configMap.remove((deliverConfigKey+".class")));
						for(String mapKey : configMap.keySet()){
							if(mapKey.indexOf(deliverConfigKey) == 0){
								String configKey = mapKey.substring(deliverConfigKey.length() - 1);
								String configValue = configMap.get(mapKey);
								parametersConfig.setConfig(configKey, configValue);
							}
						}
					}
				}
				httpConnConfigList.add(httpConnConfig);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
}
